package modelo;
import java.util.Date;

import modelo.Time;

/**
 * 
 * @author douglas_joaquim
 * 
 * Classe modelo de Evento
 */
public class Evento {
	
	
	
/**
     * 
     * @return imprime nome, time1, time2 e horario do evento no cbbEvento 
     */
	@Override
	public String toString() {
		return  estadio.nome+ "," +data+ "," +time_1+ "," +time_2+ "," +horas ;
	}

	private int idEvento;
	private Estadio estadio = new Estadio();
	private Date data;
	private Time time_1 = new Time();
	private Time time_2 = new Time();
	private double preco_geral;
	private double preco_camarote;
	private Date horas;

	
	/**
	 * Construtor com os parametros
	 * 
         * @param idEvento identificador unico de Evento
         * @param estadio Estadio onde ser realizado o Evento
         * @param data Data do Evento
         * @param time_1 Primeiro time do Evento
         * @param time_2 Segundo time do Evento
         * @param preco_geral Preo na arquibancada
         * @param preco_camarote Preo no camarote
         * @param horas Horario do Evento
         */
    public Evento(int idEvento, Estadio estadio, Date data,
			Time time_1, Time time_2, double preco_geral,
			double preco_camarote, java.sql.Time horas) {
		super();
		this.idEvento = idEvento;
	
		this.estadio = estadio;
		this.data = data;
		this.time_1 = time_1;
		this.time_2 = time_2;
		this.preco_geral = preco_geral;
		this.preco_camarote = preco_camarote;
		this.horas = horas;
	}
/**
     * Construtor vazil
     */
	public Evento() {
		
	}

	/**
     * @return Vai retornar idEvento
     */
    public int getIdEvento() {
        return idEvento;
    }

    /**
     * @param Set do idEvento
     */
    public void setIdEvento(int idEvento) {
        this.idEvento = idEvento;
    }


    /**
     * @return retornar o estadio
     */
    public Estadio getEstadio(){
    return estadio;
    }

    /**
     * @param set do estadio
     */
    public void setEstadio(Estadio estadio) {
        this.estadio =estadio;
    }

    /**
     * @return vai retornar a data
     */
    public Date getData() {
        return data;
    }

    /**
     * @param set do data
     */
    public void setData(Date data) {
        this.data = data;
    }

    /**
     * @return vai retonar o time_1 ou o time mandante do campo
     */
    public Time getTime_1() {
        return time_1;
    }

    /**
     * @param set do time mandante
     */
    public void setTime_1(Time time_1) {
        this.time_1 = time_1;
    }

    /**
     * @return vai retornar o time_2 ou o time visitante
     */
    public Time getTime_2() {
        return time_2;
    }

    /**
     * @param set do time visitante
     */
    public void setTime_2(Time time_2) {
        this.time_2 = time_2;
    }

    /**
     * @return vai retornar o preco das cadeiras do tipo geral
     */
    public double getPreco_geral() {
        return preco_geral;
    }

    /**
     * @param set do preco das cadeiras do tipo geral
     */
    public void setPreco_geral(double preco_geral) {
        this.preco_geral = preco_geral;
    }

    /**
     * @return vai retornar o preco das cadeiras do tipo Camarote
     */
    public double getPreco_camarote() {
        return preco_camarote;
    }
    

    /**
     * @param set com o preco das cadeiras do tipo camarote
     */
    public void setPreco_camarote(double preco_camarote) {
        this.preco_camarote = preco_camarote;
    }

    /**
     * @return vai retonar a hora que o evento sera realizado
     */
    public Date getHoras() {
        return horas;
    }

    /**
     * @param set da hora que o evento sera realizado
     */
    public void setHoras(Date horas) {
        this.horas = horas;
    }

    /**
     * 
     * @return resultado da comparao dos objetos
     */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((data == null) ? 0 : data.hashCode());
		result = prime * result + ((estadio == null) ? 0 : estadio.hashCode());
		result = prime * result + ((horas == null) ? 0 : horas.hashCode());
		result = prime * result + idEvento;
		long temp;
		temp = Double.doubleToLongBits(preco_camarote);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(preco_geral);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		result = prime * result + ((time_1 == null) ? 0 : time_1.hashCode());
		result = prime * result + ((time_2 == null) ? 0 : time_2.hashCode());
		return result;
	}
        /**
         * 
         * @param obj Objeto passado no cbbEvento.
         * @return se o objeto  ou no o mesmo.
         */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Evento other = (Evento) obj;
		if (data == null) {
			if (other.data != null)
				return false;
		} else if (!data.equals(other.data))
			return false;
		if (estadio == null) {
			if (other.estadio != null)
				return false;
		} else if (!estadio.equals(other.estadio))
			return false;
		if (horas == null) {
			if (other.horas != null)
				return false;
		} else if (!horas.equals(other.horas))
			return false;
		if (idEvento != other.idEvento)
			return false;
		if (Double.doubleToLongBits(preco_camarote) != Double
				.doubleToLongBits(other.preco_camarote))
			return false;
		if (Double.doubleToLongBits(preco_geral) != Double
				.doubleToLongBits(other.preco_geral))
			return false;
		if (time_1 == null) {
			if (other.time_1 != null)
				return false;
		} else if (!time_1.equals(other.time_1))
			return false;
		if (time_2 == null) {
			if (other.time_2 != null)
				return false;
		} else if (!time_2.equals(other.time_2))
			return false;
		return true;
	}
    
	
}